繼續介紹昨天主流程裡的副程式吧。
今日要點:
》Google Docs 轉換 API Blueprint 格式之二
昨天我們把主程式介紹完了,今天繼續來介紹相關的副程式:
程式碼如下:
在文件中,前面幾列是 API 的基本資料,如說明、API 名稱等。
///////////////////////////////////////////////////////
//處理表格每一列的內容
///////////////////////////////////////////////////////
function parseRowData(row, array){
switch (row) {
case 0:
var title = array[row][2];
title = title.replace(/\(/g, "(").replace(/\)/g, ")");
gApibConent = gApibConent + NL +
"## "+ title + " [" + REPLACE_URL + "]" + NL;
break;
default:
//找尋區塊的開始列
for ( var index = 0; index < gSegmentTitle.length; ++index ) {
if(array[row][0].indexOf(gSegmentTitle[index])>-1) {
gSegmentIndex[index] = row;
}
}
}
}
在文件中,前面幾列是 API 的基本資料,如說明、API 名稱等。
因為他的格式跟其他的段落不太一樣,所以需要獨立一個副程式來處理。
///////////////////////////////////////////////////////
//處理基本資料的 table 內容
///////////////////////////////////////////////////////
function makeHeaderTable(arr){
var str = "";
str = str +
"<table>" + NL ;
var len = arr.length;
for ( var row = 0; row < arr.length; ++row ) {
var thtd = "th"; //標題的欄位用 th, 前端呈現會是藍色
str = str +
" <tr>" + NL ;
if(row==1){
str = str +
" <td>" + arr[row][0] + "</td>" + NL +
" <td colspan=2>" + arr[row][1] + "</td>" + NL;
}else{
if(row>0){thtd = "td"}
for ( var cell = 0; cell < 3; ++cell ) {
str = str +
" <"+ thtd +">" +
arr[row][cell].replace(/ /g, " ").replace(/\n/g, "<br>") +
"</"+ thtd +">" + NL ;
}
}
str = str +
" </tr>" + NL;
}
str = str + "</table>" + NL;
Logger.log("makeHeaderTable(arr) = \n" + str); // debug
return str;
}
Logger.log 的執行結果:
最後我們組合 Action 區塊,這裡要從 API 文件各段落中,取出 Action 區塊中所需要的變數。主要是:
///////////////////////////////////////////////////////
//處理 Action 區塊
///////////////////////////////////////////////////////
function makeActions(arr){
var func = arr[0][1];
var title = arr[0][2];
var method = arr[(gSegmentIndex[2]+1)][1];
var str = "";
str = str + NL + "### try:" + title + " [" + method + "]" + NL + NL ;
str = str + "+ Parameters" + NL;
str = str + " + name: Jason (string, optional) -查詢人的姓名" + NL;
str = str + " + func: "+ func + " (string, required) - 要呼叫的功能名稱" + NL;
str = str + NL ;
str = str + "+ Response 200 (application/json)" + NL ;
str = str + NL ;
Logger.log("makeActions(arr) = " + str); // debug
return str;
}
Logger.log 的執行結果:
最後我們在雲端硬碟中指定一個建好的資料夾,在這個資料夾中建立一個新的檔案,把組合好的內容,存放進去。
///////////////////////////////////////////////////////
//匯出到 apib 檔
///////////////////////////////////////////////////////
function createGoogleDriveTextFile(content) {
var dir = DriveApp.getFolderById("1qihF3An6UJykI8TEii...");
fileName = "鐵人賽-API-文件-Demo-程式自動產生-" + VER + "-" + getTimestemp() + ".apib";
var file = dir.createFile(fileName, content);
};
以上就是 Google Docs 轉換 API Blueprint 格式的全部轉換程式碼了。有些地方還可以寫的更彈性,後續有時間的話再進行修正優化,讓這專案的程式可以適應更多的表格型式。